package com.ruoyi.system.domain.estate;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 收费账单对象 t_fee_bill
 * 
 * @author ruoyi
 */
public class FeeBill extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 账单ID */
    private Long billId;

    /** 账单编号 */
    @Excel(name = "账单编号")
    private String billCode;

    /** 收费项目ID */
    private Long itemId;

    /** 收费项目名称 */
    @Excel(name = "收费项目名称")
    private String itemName;

    /** 住户ID */
    private Long residentId;

    /** 住户名称 */
    @Excel(name = "住户名称")
    private String residentName;

    /** 房屋ID */
    private Long houseId;

    /** 房屋编号 */
    @Excel(name = "房屋编号")
    private String houseCode;

    /** 账单月份 */
    @Excel(name = "账单月份")
    private String billMonth;

    /** 账单开始日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "账单开始日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date startDate;

    /** 账单结束日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "账单结束日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date endDate;

    /** 应收金额 */
    @Excel(name = "应收金额")
    private BigDecimal totalAmount;

    /** 实收金额 */
    @Excel(name = "实收金额")
    private BigDecimal paidAmount;

    /** 账单状态（0未缴费 1已缴费 2部分缴费 3逾期） */
    @Excel(name = "账单状态", readConverterExp = "0=未缴费,1=已缴费,2=部分缴费,3=逾期")
    private String payStatus;

    /** 支付方式（0现金 1银行卡 2微信 3支付宝 4其他） */
    @Excel(name = "支付方式", readConverterExp = "0=现金,1=银行卡,2=微信,3=支付宝,4=其他")
    private String payType;

    /** 支付时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "支付时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date payTime;

    /** 支付交易号 */
    @Excel(name = "支付交易号")
    private String paymentTransaction;

    /** 缴费截止日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "缴费截止日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date dueDate;

    /** 状态（0正常 1停用） */
    private String status;

    /** 删除标志（0代表存在 1代表删除） */
    private String delFlag;

    public void setBillId(Long billId) 
    {
        this.billId = billId;
    }

    public Long getBillId() 
    {
        return billId;
    }
    
    public void setBillCode(String billCode) 
    {
        this.billCode = billCode;
    }

    public String getBillCode() 
    {
        return billCode;
    }
    
    public void setItemId(Long itemId) 
    {
        this.itemId = itemId;
    }

    public Long getItemId() 
    {
        return itemId;
    }
    
    public void setItemName(String itemName) 
    {
        this.itemName = itemName;
    }

    public String getItemName() 
    {
        return itemName;
    }
    
    public void setResidentId(Long residentId) 
    {
        this.residentId = residentId;
    }

    public Long getResidentId() 
    {
        return residentId;
    }
    
    public void setResidentName(String residentName) 
    {
        this.residentName = residentName;
    }

    public String getResidentName() 
    {
        return residentName;
    }
    
    public void setHouseId(Long houseId) 
    {
        this.houseId = houseId;
    }

    public Long getHouseId() 
    {
        return houseId;
    }
    
    public void setHouseCode(String houseCode) 
    {
        this.houseCode = houseCode;
    }

    public String getHouseCode() 
    {
        return houseCode;
    }
    
    public void setBillMonth(String billMonth) 
    {
        this.billMonth = billMonth;
    }

    public String getBillMonth() 
    {
        return billMonth;
    }
    
    public void setStartDate(Date startDate) 
    {
        this.startDate = startDate;
    }

    public Date getStartDate() 
    {
        return startDate;
    }
    
    public void setEndDate(Date endDate) 
    {
        this.endDate = endDate;
    }

    public Date getEndDate() 
    {
        return endDate;
    }
    
    public void setTotalAmount(BigDecimal totalAmount) 
    {
        this.totalAmount = totalAmount;
    }

    public BigDecimal getTotalAmount() 
    {
        return totalAmount;
    }
    
    public void setPaidAmount(BigDecimal paidAmount) 
    {
        this.paidAmount = paidAmount;
    }

    public BigDecimal getPaidAmount() 
    {
        return paidAmount;
    }
    
    public void setPayStatus(String payStatus) 
    {
        this.payStatus = payStatus;
    }

    public String getPayStatus() 
    {
        return payStatus;
    }
    
    public void setBillStatus(String billStatus) 
    {
        this.payStatus = billStatus;
    }

    public String getBillStatus() 
    {
        return payStatus;
    }
    
    public void setPayType(String payType) 
    {
        this.payType = payType;
    }

    public String getPayType() 
    {
        return payType;
    }
    
    public void setPaymentMethod(String paymentMethod) 
    {
        this.payType = paymentMethod;
    }

    public String getPaymentMethod() 
    {
        return payType;
    }
    
    public void setPayTime(Date payTime) 
    {
        this.payTime = payTime;
    }

    public Date getPayTime() 
    {
        return payTime;
    }
    
    public void setPaymentTime(Date paymentTime) 
    {
        this.payTime = paymentTime;
    }

    public Date getPaymentTime() 
    {
        return payTime;
    }
    
    public void setPaymentTransaction(String paymentTransaction) 
    {
        this.paymentTransaction = paymentTransaction;
    }

    public String getPaymentTransaction() 
    {
        return paymentTransaction;
    }
    
    public void setDueDate(Date dueDate) 
    {
        this.dueDate = dueDate;
    }

    public Date getDueDate() 
    {
        return dueDate;
    }
    
    public void setStatus(String status) 
    {
        this.status = status;
    }

    public String getStatus() 
    {
        return status;
    }
    
    public void setDelFlag(String delFlag) 
    {
        this.delFlag = delFlag;
    }

    public String getDelFlag() 
    {
        return delFlag;
    }

    public BigDecimal getAmount() 
    {
        return totalAmount;
    }

    public void setAmount(BigDecimal amount) 
    {
        this.totalAmount = amount;
    }

    public Date getBillStartDate() 
    {
        return startDate;
    }

    public void setBillStartDate(Date billStartDate) 
    {
        this.startDate = billStartDate;
    }

    public Date getBillEndDate() 
    {
        return endDate;
    }

    public void setBillEndDate(Date billEndDate) 
    {
        this.endDate = billEndDate;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("billId", getBillId())
            .append("billCode", getBillCode())
            .append("itemId", getItemId())
            .append("itemName", getItemName())
            .append("residentId", getResidentId())
            .append("residentName", getResidentName())
            .append("houseId", getHouseId())
            .append("houseCode", getHouseCode())
            .append("billMonth", getBillMonth())
            .append("startDate", getStartDate())
            .append("endDate", getEndDate())
            .append("totalAmount", getTotalAmount())
            .append("paidAmount", getPaidAmount())
            .append("payStatus", getPayStatus())
            .append("payType", getPayType())
            .append("payTime", getPayTime())
            .append("paymentTransaction", getPaymentTransaction())
            .append("dueDate", getDueDate())
            .append("status", getStatus())
            .append("delFlag", getDelFlag())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
} 